package cn.miju.alipay.model;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import lombok.ToString;

import java.math.BigDecimal;

/**
 * <pre>
 * 支付宝支付结果异步通知接口请求参数
 * </pre>
 *
 * @author zhuming
 * @version 1.0.0
 * @since 2023-03-01 16:14
 */
@Data
@ToString
public class PayResultNotifyRequest {
    /**
     * 通知时间，格式为 yyyy-MM-dd HH:mm:ss
     */
    @JSONField(name = "notify_time")
    private String notifyTime;
    /**
     * 通知类型
     * 枚举值：trade_status_sync。
     */
    @JSONField(name = "notify_type")
    private String notifyType;
    /**
     * 通知校验ID
     */
    @JSONField(name = "notify_id")
    private String notifyId;
    /**
     * 签名类型
     */
    @JSONField(name = "sign_type")
    private String signType;
    /**
     * 签名
     */
    private String sign;
    /**
     * 支付宝交易号
     */
    @JSONField(name = "trade_no")
    private String tradeNo;
    /**
     * 开发者应用ID
     */
    @JSONField(name = "app_id")
    private String appId;
    /**
     * 授权方应用ID
     */
    @JSONField(name = "auth_app_id")
    private String authAppId;
    /**
     * 商户订单号
     */
    @JSONField(name = "out_trade_no")
    private String outTradeNo;
    /**
     * 买家支付宝用户号
     */
    @JSONField(name = "buyer_id")
    private String buyerId;
    /**
     * 买家支付宝账号
     */
    @JSONField(name = "buyer_logon_id")
    private String buyerLogonId;
    /**
     * 卖家支付宝用户号
     */
    @JSONField(name = "seller_id")
    private String sellerId;
    /**
     * 卖家支付宝账号
     */
    @JSONField(name = "seller_email")
    private String sellerEmail;
    /**
     * 交易状态
     * WAIT_BUYER_PAY 交易创建，等待买家付款。
     * TRADE_CLOSED 未付款交易超时关闭，或支付完成后全额退款。
     * TRADE_SUCCESS 交易支付成功。
     * TRADE_FINISHED 交易结束，不可退款。
     */
    @JSONField(name = "trade_status")
    private String tradeStatus;
    /**
     * 订单金额
     */
    @JSONField(name = "total_amount")
    private BigDecimal totalAmount;
    /**
     * 实收金额
     */
    @JSONField(name = "receipt_amount")
    private BigDecimal receiptAmount;
    /**
     * 开票金额
     */
    @JSONField(name = "invoice_amount")
    private BigDecimal invoiceAmount;
    /**
     * 付款金额
     */
    @JSONField(name = "buyer_pay_amount")
    private BigDecimal buyerPayAmount;
    /**
     * 集分宝金额
     */
    @JSONField(name = "point_amount")
    private BigDecimal pointAmount;
    /**
     * 总退款金额
     */
    @JSONField(name = "refund_fee")
    private BigDecimal refundFee;
    /**
     * 实际退款金额
     */
    @JSONField(name = "send_back_fee")
    private BigDecimal sendBackFee;
    /**
     * 订单标题
     */
    private String subject;
    /**
     * 商品描述
     */
    private String body;
    /**
     * 交易创建时间，格式为 yyyy-MM-dd HH:mm:ss
     */
    @JSONField(name = "gmt_create")
    private String gmtCreate;
    /**
     * 交易付款时间，格式为 yyyy-MM-dd HH:mm:ss
     */
    @JSONField(name = "gmt_payment")
    private String gmtPayment;
    /**
     * 交易退款时间，格式为 yyyy-MM-dd HH:mm:ss:SS
     */
    @JSONField(name = "gmt_refund")
    private String gmtRefund;
    /**
     * 交易结束时间，格式为 yyyy-MM-dd HH:mm:ss
     */
    @JSONField(name = "gmt_close")
    private String gmtClose;
    /**
     * 支付金额信息
     */
    @JSONField(name = "fund_bill_list")
    private String fundBillList;
    /**
     * 优惠券信息
     */
    @JSONField(name = "voucher_detail_list")
    private String voucherDetailList;

}
